package com.shopx.cm.dao.db1;

import com.shopx.cm.bean.CmSaleDetail;
import com.shopx.cm.bean.MaterialSaleDTO;
import com.shopx.cm.bean.MaterialSaleReqDTO;
import com.shopx.cm.dto.MaterialSaleSyncDTO;
import com.shopx.cm.model.CmSaleDetailModel;
import com.shopx.dal.mysql.SqlMapper;
import java.util.List;

/**
 * TODO
 * @author lituo
 * @className: CmSaleDetail
 * @date 2025-03-05
 */
@SqlMapper
public interface CmSaleDetailDao {
    /**
     * 查询明细记录
     * @author lituo
     * @date 2025-03-05
     * @param cmSaleDetail
     * @return CmSaleDetailModel
     */
    CmSaleDetailModel selectByPrimaryKey(CmSaleDetail cmSaleDetail);
    /**
     * 新增记录
     * @author lituo
     * @date 2025-03-05
     * @param cmSaleDetail
     * @return int
     */
	int insertSelective(CmSaleDetail cmSaleDetail);

    /**
     * 修改记录
     * @author lituo
     * @date 2025-03-05
     * @param cmSaleDetail
     * @return int
     */
	int updateByPrimaryKeySelective(CmSaleDetail cmSaleDetail);

    /**
     * 删除记录
     * @author lituo
     * @date 2025-03-05
     * @param cmSaleDetail
     * @return int
     */
	int deleteByPrimaryKey(CmSaleDetail cmSaleDetail);

    /**
     * 查询总记录数
     * @author lituo
     * @date 2025-03-05
     * @param cmSaleDetail
     * @return int
     */
	int selectCount(CmSaleDetailModel cmSaleDetail);

    /**
     * 查询列表
     * @author lituo
     * @date 2025-03-05
     * @param cmSaleDetail
     * @return List<CmSaleDetailModel>
*/
	List<CmSaleDetailModel> selectList(CmSaleDetailModel cmSaleDetail);

    /**
     * 批量插入
     * @param list
     */
    void insertBatch(List<MaterialSaleSyncDTO> list);

    /**
     * 材料销量数据列表（到材料）
     *
     * @return
     */
    List<MaterialSaleDTO> querySalesByMaterialList(MaterialSaleReqDTO dto);

    /**
     * 材料销量数据数量（到材料）
     *
     * @return
     */
    int querySalesByMaterialCnt(MaterialSaleReqDTO dto);

    /**
     * 根据大区分组查询
     * @param dto
     * @return
     */
    List<MaterialSaleDTO> querySalesByRegionList(MaterialSaleReqDTO dto);
    /**
     * 根据品牌分组查询
     * @param dto
     * @return
     */
    List<MaterialSaleDTO> querySalesBySpList(MaterialSaleReqDTO dto);
    /**
     * 根据材料分组查询
     * @param dto
     * @return
     */
    List<MaterialSaleDTO> querySalesByNameList(MaterialSaleReqDTO dto);

    /**
     * 材料销量数据列表（到品牌）
     *
     * @return
     */
    List<MaterialSaleDTO> querySalesByBrandList(MaterialSaleReqDTO dto);

    /**
     * 材料销量数据数量（到品牌）
     *
     * @return
     */
    int querySalesByBrandCnt(MaterialSaleReqDTO dto);

    /**
     * 材料销量数据列表（到成控编码）
     *
     * @return
     */
    List<MaterialSaleDTO> querySalesByCodeList(MaterialSaleReqDTO dto);

    /**
     * 材料销量数据数量（到成控编码）
     *
     * @return
     */
    int querySalesByCodeCnt(MaterialSaleReqDTO dto);


    /**
     * 材料销量数据列表（到月份）
     *
     * @return
     */
    List<MaterialSaleDTO> querySalesByMthList(MaterialSaleReqDTO dto);

    /**
     * 材料销量数据数量（到月份）
     *
     * @return
     */
    int querySalesByMthCnt(MaterialSaleReqDTO dto);

    /**
     * 根据品类分组获取
     * @param dto
     * @return
     */
    List<MaterialSaleDTO> querySalesListByCode(MaterialSaleReqDTO dto);

    /**
     * 清空数据重新抽取
     * @return
     */
    int truncateTable();



    /**
     * 材料销量数据列表（到月份）
     *
     * @return
     */
    List<MaterialSaleDTO> querySalesByBrsList(MaterialSaleReqDTO dto);

    /**
     * 材料销量数据数量（到月份）
     *
     * @return
     */
    int querySalesByBrsCnt(MaterialSaleReqDTO dto);

}

